import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
Nakreslenie grafu kvadratickej funkcie danej rovnicou $$y = x^2.$$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 # ufunc verzia funkcie
X = np.linspace(-3, 3, 6*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = x^2$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
ax.set_yticks(range(0, 9+1)) # kótovanie y-ovej osi
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Vyšetrenie priebehu kvadratickej funkcie danej rovnicou $$y = x^2.$$ Tu nás zaujímajú tieto informácie:
#####
##### vyšetrenie priebehu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 # ufunc verzia funkcie
X = np.linspace(-3, 3, 6*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Priebeh funkcie $y = x^2$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
ax.set_yticks(range(0, 9+1)) # kótovanie y-ovej osi
## extrémy funkcie
ax.plot(0, f(0), 'o', label=r"ostré minimum")
## monotónnosť funkcie
X1 = X[X <= 0] # interval, na ktorom je funkcia klesajúca
ax.plot(X1, f(X1), label=r"klesajúca", zorder=1)
X2 = X[X >= 0] # interval, na ktorom je funkcia rastúca
ax.plot(X2, f(X2), label=r"rastúca", zorder=1)
## legenda
# ax.legend()
ax.legend(loc='center') # umiestenie v strede diagramu
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Nakreslenie grafu a vyšetrenie priebehu kvadratickej funkcie danej rovnicou $$y = x^2-x-1.$$ Tu nás zaujímajú tieto informácie:
Riešenie je rozdelené do dvoch častí: v prvej časti je nakreslený graf funkcie, v druhej je vyšetrený priebeh funkcie.
Návod. Výraz na pravej strane definičnej rovnice upravíme najprv na štvorec $$ x^2-x-1 = x^2-2\frac{x}{2}+\frac{1}{4}-\frac{5}{4} = \left(x-\frac{1}{2}\right)^2-\frac{5}{4}. $$ To nám umožní zapísať definičnú rovnicu vo vrcholovom tvare $$y = \left(x-\frac{1}{2}\right)^2-\frac{5}{4}.$$ Grafom funkcie je tak parabola osovo súmerná s priamkou $x = \frac{1}{2}$. Vrchol paraboly je v bode $\left[\frac{1}{2},-\frac{5}{4}\right]$; v jeho prvej súradnici $\frac{1}{2}$ nadobúda funkcia ostré minimum. Nulové body funkcie vypočítame takto $$ 0 = x^2-x-1 \Leftrightarrow \left(x-\frac{1}{2}\right)^2 = \frac{5}{4} \Leftrightarrow \left|x-\frac{1}{2}\right| = \frac{\sqrt{5}}{2} \Leftrightarrow x = \frac{1}{2}\pm\frac{\sqrt{5}}{2} = \frac{1\pm\sqrt{5}}{2}. $$ Číslo $\frac{1+\sqrt{5}}{2}$ sa nazýva zlatý rez:
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 - X - 1 # ufunc verzia funkcie
X = np.linspace(-2, 3, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 11) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = x^2-x-1$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
#####
##### vyšetrenie priebehu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 - X - 1 # ufunc verzia funkcie
X = np.linspace(-2, 3, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 11) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Priebeh funkcie $y = x^2-x-1$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
## nulové body funkcie
ax.plot([(1-np.sqrt(5))/2, (1+np.sqrt(5))/2], [0, 0], 'kx', label=r"nulové body $\frac{1\mp\sqrt{5}}{2}$")
## extrémy funkcie
ax.plot(1/2, f(1/2), 'o', label=r"ostré minimum v bode $\frac{1}{2}$")
## monotónnosť funkcie
X1 = X[X <= 1/2] # interval, na ktorom je funkcia klesajúca
ax.plot(X1, f(X1), label=r"klesajúca", zorder=1)
X2 = X[X >= 1/2] # interval, na ktorom je funkcia rastúca
ax.plot(X2, f(X2), label=r"rastúca", zorder=1)
## legenda
ax.legend(loc='center')
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
V nasledujúcich príkladoch budeme kresliť grafy a vyšetrovať priebeh vybraných kvadratických funkcií. Pretože tieto funkcie majú neohraničený definičný obor, budeme pri zostrojovaní grafu každej takejto funkcie vykreslovať len jej zaujímavú časť. Pri vyšetrovani priebehu týchto funkcií treba určiť:
Súradnice význačných bodov, ktoré sú zrejmé z grafu, netreba explicitne uvádzať. Doporučujeme riešenie rozdeliť do dvoch častí:
#####
##### šablóna riešenia (nakreslenie grafu a vyšetrenie priebehu funkcie)
#####
#### vstupné údaje
# def f(X): return None # ufunc verzia funkcie
# X = np.linspace(None, None, None+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
# fig, ax = plt.subplots()
# fig.set_size_inches(6, 4) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
# init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
# ax.set_title(r"Graf funkcie $y = ?x^2+?x+?$") # pomenovanie diagramu
# ax.set_title(r"Priebeh funkcie $y = ?x^2+?x+?$") # pomenovanie diagramu
# ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## graf funkcie
# ax.plot(X, Y)
## nulové body funkcie
# ax.plot(None, 0, 'kx', label=r"nulový bod")
## extrémy funkcie
# ax.plot(None, f(None), 'o', label=r"extrém v bode $?$")
## monotónnosť funkcie
# X1 = X[X <= None] # interval, na ktorom je funkcia monotónna
# ax.plot(X1, f(X1), label=r"monotónna", zorder=1)
## legenda
# ax.legend()
# ax.legend(loc='center') # umiestenie v strede diagramu
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
# fig.show()
Nakreslite grafy a vyšetrite priebeh týchto funkcií $$y = x^2-x-2$$ $$y = \frac{x^2}{2}+x+1$$
Nakreslite graf a vyšetrite priebeh funkcie danej rovnicou $$y = -\frac{x^2}{2}+x+2.$$
Nájdite kvadratickú funkciu, ktorej graf je parabola prechádzajúca bodmi $[-1,-3]$, $[0,-3]$ a $[1,1]$. Overte graficky, že riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(4, 7)
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_yticks(range(-4, 4+1))
ax.plot([-1, 0, 1], [-3, -3, 1], 'o')
## riešenie
# def f(X): return None
# X = np.linspace(-2.5, 1.5, 8*10+1)
# ax.plot(X, f(X), label=r"riešenie $y = ?x^2+?x+?$")
## dokončenie
# ax.legend()
# fig.savefig("<meno súboru>.png")
fig.show()
V nasledujúcich príkladoch si ukážeme, ako kresliť grafy parametrických systémov kvadratických funkcií. V niektorých z nich sa vykreslenie deje pomocou interaktívnych prvkov knižnice ipywidgets
.
Dokumentácia:
V príkladoch si tiež aktívne precvičíme niektoré elementárne transformácie grafov funkcií.
Nakreslenie grafov kvadratických funkcií $$y = ax^2$$ pre $a = -2, -1, -\frac{1}{2}, \frac{1}{2}, 1, 2$ do jedného obrázka. Graf takejto funkcie vznikne z grafu funkcie $y = x^2$
Pokyny. Nakreslite grafy pre iný výber parametrov.
#####
##### grafy parametrického systému funkcií
#####
#### vstupné údaje
def f(X, a): return a * X ** 2
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
### diagram
init_subplot(ax)
ax.set_title(r"Grafy funkcií $y = ax^2$")
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_xticks(range(-3, 3+1))
ax.set_yticks(range(-9, 9+1))
## grafy funkcií
for a in [-2, -1, -1/2, 1/2, 1, 2]:
ax.plot(X, f(X, a), label=r"$a = {}$".format(a))
## legenda
#ax.legend()
ax.legend(loc='upper center')
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a): return a * X ** 2
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
### diagram
init_subplot(ax)
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_xticks(range(-3, 3+1))
ax.set_yticks(range(-9, 9+1))
## graf funkcie y = ax²
def plot_graph(a):
ax.set_title(r"Graf funkcie $y = {0}{{x}}^2$".format(a))
if ax.lines:
ax.lines[0].set_ydata(f(X, a))
else:
ax.plot(X, f(X, a))
widgets.interact(plot_graph,
a=widgets.SelectionSlider(options=[-2, -1, -1/2, 1/2, 1, 2], value=1)
#a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1) # iný výber parametrov
)
### samotné zobrazenie
fig.show()
interactive(children=(SelectionSlider(description='a', index=4, options=(-2, -1, -0.5, 0.5, 1, 2), value=1), O…
Do jedného obrázka nakreslite grafy kvadratických funkcií $$y = (x-h)^2$$ pre $h = -2, -1, 0, 1, 2$. Graf takejto funkcie vznikne z grafu funkcie $y = x^2$ posunutím o $h$ jednotiek pozdĺž osi $x$.
Návod.
Nasledujúci obrázok obsahuje jedno z možných riešení.
Iné riešenie by bolo pomocou interaktívnych prvkov knižnice ipywidgets
.
Do jedného obrázka nakreslite grafy kvadratických funkcií $$y = x^2+k$$ pre $k = -2, -1, 0, 1, 2$. Graf takejto funkcie vznikne z grafu funkcie $y = x^2$ posunutím o $k$ jednotiek pozdĺž osi $y$.
Návod.
Nasledujúci obrázok obsahuje jedno z možných riešení.
Iné riešenie by bolo pomocou interaktívnych prvkov knižnice ipywidgets
.
Nakreslenie grafu kvadratickej funkcie danej rovnicou vo vrcholovom tvare $$y = a(x-h)^2+k$$ pre vybrané hodnoty parametrov $a,h,k$. Parabola, ktorá je grafom funkcie, má vrchol v bode $[h,k]$.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, h, k): return a * (X - h) ** 2 + k
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
### diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_yticks(range(-9, 9+1))
## graf funkcie y = a(x-h)²+k
def plot_graph(a, h, k):
ax.set_title(r"Graf funkcie $y = {0}({{x}}-{1})^2+{2}$".format(a, h, k))
if ax.lines:
ax.lines[0].set_ydata(f(X, a, h, k))
ax.lines[1].set_data(h, k)
else:
ax.plot(X, f(X, a, h, k))
ax.plot(h, k, 'o')
widgets.interact(plot_graph,
a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1),
h=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1),
k=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1)
)
### samotné zobrazenie
fig.show()
interactive(children=(FloatSlider(value=1.0, description='a', max=2.0, min=-2.0), FloatSlider(value=0.0, descr…
Nakreslenie grafu kvadratickej funkcie danej rovnicou v štandardnom tvare $$y = ax^2+bx+c$$ pre vybrané hodnoty parametrov $a,b,c$.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, b, c): return a * X ** 2 + b * X + c
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
### diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_yticks(range(-9, 9+1))
## graf funkcie y = ax²+bx+c
def plot_graph(a, b, c):
ax.set_title(r"Graf funkcie $y = {0}{{x}}^2+{1}{{x}}+{2}$".format(a, b, c))
if ax.lines:
ax.lines[0].set_ydata(f(X, a, b, c))
else:
ax.plot(X, f(X, a, b, c))
widgets.interact(plot_graph,
a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1),
b=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1),
c=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1)
)
### samotné zobrazenie
fig.show()
interactive(children=(FloatSlider(value=1.0, description='a', max=2.0, min=-2.0), FloatSlider(value=0.0, descr…